package cn.lizemin.template.version0.entity;

/**
 * @author lzm
 * @version 1.0
 * @description: 将生物共有的生存方法提取到父类中，这里也提供了一个扩展点，可以让即将新增的蝙蝠类少写
 * 一个重复的共有方法live
 * @date 2022/4/20 10:34
 */
public abstract class Mammal {
    /**
     * 变化点
     */
    protected abstract void move();
    protected abstract void eat();

    /**
     * 不变点
     */
    public void live() {
        move();
        eat();
        breed();
    }

    /**
     * 不允许子类重写和调用，除了public，子类对象才可以调用该方法
     *
     * 子类对象只能通过调用public修饰的live方法来间接调用该方法
     */
    private void breed() {
        System.out.println("繁殖后代。。。");
    }


}
